package com.guli.edu.controller.admin;


import com.guli.common.vo.R;
import com.guli.edu.service.FileService;
import com.guli.edu.util.ConstantPropertiesUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Api(tags="文件管理")
@CrossOrigin //跨域
@RestController
@RequestMapping("/admin/oss/file")
public class FileController {

    @Autowired
    private FileService fileService;

    /**
     * 文件上传
     *
     AccessKeyID：
     LTAI4FmHR2XauhKccmWYqixz

     AccessKeySecret：
     LScmB7oU2x9AV0VZRPVDFuO4WU4ToS


     AccessKeyID:
     LTAI4FnGR41TgENFcvSxgS3T
     AccessKeySecret:
     4yBYJvkUPDJ6CQqhiqrevZMXwWfHId
     *
     * @param file
     */
    @ApiOperation(value = "文件上传")
    @PostMapping("upload")
    public R upload(
            @ApiParam(name = "file", value = "文件", required = true)
            @RequestParam("file") MultipartFile file,

    @ApiParam(name = "host", value = "文件上传路径", required = false)
    @RequestParam(value = "host", required = false) String host) {
        //获取文件在服务器的储存位置
//        String path = request.getSession().getServletContext().getRealPath("/upload");
//        File filePath = new File(path);
//        System.out.println("文件的保存路径：" + path);
//        if (!filePath.exists() && !filePath.isDirectory()) {
//            System.out.println("目录不存在，创建目录:" + filePath);
//            filePath.mkdir();
//        }
//
//        //获取原始文件名称(包含格式)
//        String originalFileName = picture.getOriginalFilename();
//        System.out.println("原始文件名称：" + originalFileName);
//
//        //获取文件类型，以最后一个`.`为标识
//        String type = originalFileName.substring(originalFileName.lastIndexOf(".") + 1);
//        System.out.println("文件类型：" + type);
//        //获取文件名称（不包含格式）
//        String name = originalFileName.substring(0, originalFileName.lastIndexOf("."));
//
//        //设置文件新名称: 当前时间+文件名称（不包含格式）
//        Date d = new Date();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
//        String date = sdf.format(d);
//        String fileName = date + name + "." + type;
//        System.out.println("新文件名称：" + fileName);
//
//        //在指定路径下创建一个文件
//        File targetFile = new File(path, fileName);
//
//        //将文件保存到服务器指定位置
//        try {
//            picture.transferTo(targetFile);
//            System.out.println("上传成功");
//            //将文件在服务器的存储路径返回
//            return R.ok().message("上传成功").data("url","http://localhost:8110/upload/" + fileName);
//        } catch (IOException e) {
//            System.out.println("上传失败");
//            e.printStackTrace();
//            return R.error().message("上传失败");
//        }
        if(!StringUtils.isEmpty(host)){
            ConstantPropertiesUtil.FILE_HOST = host;
        }
        String uploadUrl = fileService.upload(file);
        //返回r对象
        return R.ok().message("文件上传成功").data("url", uploadUrl);
    }
}